package com.itheima.service.impl;

import com.itheima.dao.AccountDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author by itheima
 * @Date 2022/4/24
 * @Description
 */
@Service
public class AccountServiceClass {

    @Autowired
    private AccountDao dao;

    /**
     * 转账业务，默认转播行为是Propagation.REQUIRED
     * @param outId
     * @param inId
     * @param money
     */
    @Transactional(propagation = Propagation.REQUIRED)
    public void transfer(int outId, int inId, double money) {
        //独立的事务 自动开启 自动提交
        dao.outMoney(outId, money);
        //可能在转账过程中发生意外: 转出执行,转入还未执行
        int i = 1 / 0;
        //独立的事务 自动开启 自动提交
        dao.inMoney(inId, money);
    }

    /**
     * log日志加入是非主业务，不应该影响主业务
     * 所以让他独立一个事务去处理
     * @param msg
     */
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void insertLog(String msg){
        dao.insertLog(msg);
    }

}
